package Java基础Day05面向对象中.多态性.多态性练习.练习2;

/**
 * Created with IntelliJ IDEA.
 *
 * @author 李铭洋
 * @company 王自立有限公司
 * @date 2021-12-08 09:08
 * @Description:
 **/
/*
建立InstanceTest 类，在类中定义方法
method(Person e);
在method中:
(1)根据e的类型调用相应类的getInfo()方法。
(2)根据e的类型执行：
如果e为Person类的对象，输出：
“a person”;
如果e为Student类的对象，输出：
“a student”
“a person ”
如果e为Graduate类的对象，输出：
“a graduated student”
“a student”
“a person”
 */
public class InstanceTest {
    public static void main(String[] args) {
        InstanceTest test=new InstanceTest();
        test.method(new Student());
        test.method(new Graduate());
        test.method(new Person());
    }
    public void method(Person e)
    {
        //虚拟方法调用
        String info=e.getInfo();
        System.out.println(info);
        if (e instanceof Graduate){
            System.out.println("a graduated student");
            System.out.println("a student");
            System.out.println("a person");
        }else if(e instanceof  Student){
            System.out.println("a student");
            System.out.println("a person");
        }else {
            System.out.println("a person");
        }
    }
}
class Person{
    protected  String name="person";
    protected int age=50;
    public String getInfo(){
        return "Name: "+ name + "\n" +"age: "+ age;
    }
}
class Student extends Person{
    protected String school="pku";
    public String getInfo(){
        return "Name: "+ name + "\nage: "+ age+ "\nschool: "+ school;
    }
}
class Graduate extends Student{
    public String major="IT";
    public String getInfo(){
        return "Name: "+ name + "\nage: "+ age+ "\nschool: "+ school+"\nmajor:"+major;

    }
}
